Pixar is well known for producing award-winning three-dimensional (“3D”) computer-animated films, such as “Toy Story” (1995), “Monsters, Inc.” (2001), “Finding Nemo” (2003), “The Incredibles” (2004), “Ratatouille” (2007), “WALL-E” (2008), “Up” (2009), and “Brave” (2012). In order to produce films such as these, Pixar developed its own platform for network-distributed rendering of complex 3D graphics, including ray-traced 3D views. The RenderMan® platform includes the RenderMan® Interface Specification (an API to establish an interface between modeling programs, e.g., AUTODESK MAYA, and rendering programs in order to describe 3D scenes), RenderMan® Shading Language (a language to define various types of shaders: surface, light, volume, imager, and displacement), and PhotoRealistic RenderMan® (a rendering software system).
Many computer graphic images are created by mathematically modeling the interaction of light with various objects (e.g., a character) a 3D scene from a given viewpoint. Each 3D object in the scene may be represented by a 3D model of its surface geometry, for example, a shell model (e.g., polygon mesh, non-uniform rational B-spline (NURBS) curves, or subdivision surface, such as a Catmull-Clark subdivision mesh).
By utilizing various shaders (shading and lighting programs), the scene may be illuminated by one or more light sources in the scene to determine the final color information at each location in the scene. By
This process, called rendering, uses a rendering system to generate a two-dimensional image (2D) of the scene from the given viewpoint, and is analogous to taking a photograph of a real-world scene. Animated sequences can be created by rendering a sequence of images of a scene as the scene changes over time.
Surface attribute functions can define the values of attributes of surfaces in three-dimensional space. Surface attribute functions can be evaluated at any point on the surface to provide corresponding attribute values at that point on the surface. Attributes of surfaces can include optical properties of a surface, such as color, transparency, reflectivity, and refractivity. Attributes can also include visibility or occlusion information; artistically or procedurally generated texture data in one, two, three, or more dimensions; shadow generation information; illumination information, which specifies the amount and direction of light on the surface point from other portions of the scene; and rendering information, such as ray tracing path information or radiosity rendering information. Functions can be relatively simple, such as looking up texture data from a texture map, or very complex, such as the evaluation of complex user-defined shader programs, ray tracing programs, animation or modeling programs, or simulation programs.
An application such as a rendering or animation application determines pixel values in an image by evaluating or sampling a surface and its associated surface attribute functions. Surfaces can include triangles and polygons; higher-order surfaces such as B-splines; subdivision surfaces; and implicit surfaces, among others.
Many rendering effects are performed by sampling a 3D scene at discrete points. The rendering system determines one or more attribute values, such as color, transparency, or depth, for the sample of the 3D scene. The attribute values of one or more samples of the 3D scene are then combined to determine the value of a pixel of the rendered image. For example, a rendering system may trace sample rays into a 3D scene (or project geometry onto an image plane) to render geometry. The intersection of a sampling ray and geometry (or an image sample point in the image plane and the projected geometry) defines a sample of the 3D scene used to determine the value of a pixel of the rendered image. Additionally, illumination, shadowing, scattering, depth of field, motion blur, reflection, and refraction effects are created by casting additional sample rays from an intersected portion of scene geometry into further portions of the 3D scene.
As part of the determination of a color attribute of a point (or points) on a surface, each light source in a set typically is evaluated to determine whether that light source contributes to the computed color value of that point. This determination entails identifying whether the light emitted from each light source is transmitted to the given point on the surface, whether the light is blocked by some other element of the object scene, and/or whether the light falls off (loses all intensity or ability to light an object) before reaching the surface. It further is possible that the light source is outside the frame or shot (multiple contiguous frames) of animation, or outside the view of a virtual camera viewing the set and determining the bounds of the frame(s), but still illuminates at least one surface in the frame or shot. Even further still, a light outside a frame might cast a shadow on an object or surface in the frame.
Conventional techniques of generating special effects for an animated character have been achieved using a manual and iterative process of compositing 2D images to combine visual elements from different sources into a single image. When used to achieve certain special effects, such as a soft, glow-like effect, such techniques may require such time-consuming and labor-intensive effort on the part of the artist/animator (particularly when dealing with 3D graphics) that oftentimes, a dedicated person may be hired as a compositer.